package com.xjh.basestudy.designmode.behaviorMode.behaviorMode10_Observer.p2_observer;

/**
 * @Author XuJianHua
 * @Date 2022/10/6 21:52
 * @Description
 * ，客户端在第4行开始对买家及商店进行实例化，接着从第9行开始调用商店的注册方法register()，并对两位买家进行了预订注册。
 * 代码到这里，一对多的状态响应机制就已经建立起来了。最后我们来验证买家是否能收到通知，可以看到第13行商店到货并调用了方法setProduct()，输出结果显示两位买家都收到了通知，并购买了自己心仪的商品，
 * 此后再也看不到买家们终日徘徊于店门之外苦苦等待的身影了，高效的通知和响应机制解除了观察者的烦恼。
 * 当然，我们还可以进一步对被商店类进行抽象实现目标主题的多态化。读者可以自行实现，但需要注意切勿过度设计，一切应以需求为导向。
 *
 * 理解：
 *
 * 商店中（目标主题）实现了注册（订阅）和购买（发布）方法。
 *
 * 观察者调用订阅方法，把自己放到商店中，如果商店进货了，则可以通知订阅者。
 */
public class Client {

    public static void main(String[] args) {
        Buyer tangSir = new PhoneFans("手机粉");
        Buyer barJee = new HandChopper("剁手族");
        Shop shop = new Shop();

        //预订注册
        shop.register(tangSir);
        shop.register(barJee);

        //商品到货
        shop.setProduct("猪肉炖粉条");
        shop.setProduct("橘子手机");

     /*输出结果
        剁手族购买：猪肉炖粉条
        果粉购买：橘子手机
        剁手族购买：橘子手机
      */
    }}